const projectAllFiles = Object.keys(import.meta.glob("@/**/*"));
const files = projectAllFiles.map((v) => {
  return v.split("/").filter((v) => v !== ".." && v);
});
function buildFileTree(paths) {
  // 创建根节点（虚拟节点）
  let id = 1;
  const root = { name: "root", children: [] };
  for (const path of paths) {
    let currentNode = root;
    for (let i = 0; i < path.length; i++) {
      const segment = path[i];
      const isFile = i === path.length - 1; // 最后一级为文件夹
      // 检查当前节点是否已存在
      let childNode = currentNode.children.find(
        (child) => child.name === segment
      );
      // 不存在则创建新节点
      if (!childNode) {
        childNode = {
          name: segment,
          isFile,
          id: id++,
          children: isFile ? undefined : [],
        };
        currentNode.children.push(childNode);
      }
      // 移动到下一层级（文件夹才继续深入）
      if (!isFile) {
        currentNode = childNode;
      }
    }
  }

  function sortTree(nodes) {
    if (!nodes) return;
    // 分离文件夹和文件
    const folders = nodes.filter((n) => !n.isFile);
    const files = nodes.filter((n) => n.isFile);
    // 分别排序（文件夹按名称排序，文件按名称排序）
    folders.sort((a, b) => a.name.localeCompare(b.name));
    files.sort((a, b) => a.name.localeCompare(b.name));
    // 合并结果（文件夹在前）
    const sortedNodes = [...folders, ...files];
    // 递归排序子节点
    folders.forEach((folder) => {
      folder.children = sortTree(folder.children);
    });
    return sortedNodes;
  }
  root.children = sortTree(root.children);
  return root.children;
}
// 项目文件结构
export const projectFileTree = buildFileTree(files);
